package com.example.shoputils.md5;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * @Author 刘武贵
 * @Date 2024/2/26 23:58
 * @Description 功能描述：通用MD5与密码加密类
 */
public class MD5Hash {

    /**
     * 使用Java的MessageDigest类计算字符串的MD5哈希值
     * @param message 要计算哈希值的字符串
     * @return 计算得到的MD5哈希值
     */
    public static String md5Java(String message) {
        String digest = null;
        try {
            // 创建MessageDigest对象，指定使用MD5算法
            MessageDigest md = MessageDigest.getInstance("MD5");
            // 将字符串转换为字节数组，并使用UTF-8编码
            byte[] hash = md.digest(message.getBytes("UTF-8"));

            // 将字节数组转换为十六进制字符串
            StringBuilder sb = new StringBuilder(2 * hash.length);
            for (byte b : hash) {
                sb.append(String.format("%02x", b & 0xff));
            }

            digest = sb.toString();

        } catch (UnsupportedEncodingException ex) {
            // 处理UTF-8编码不被支持的情况
        } catch (NoSuchAlgorithmException ex) {
            // 处理指定的算法不被支持的情况
        }
        return digest;
    }
}
